package kov.core
{
	import flash.geom.Rectangle;
	
	/**
	 * 不可走区域数据。
	 * @author Y.Boy
	 */	
	public class BlockData
	{
		private var blockList:Vector.<Rectangle>; // 不可走区域
		
		/**
		 * 构造函数。
		 */		
		public function BlockData()
		{
			this.blockList = new Vector.<Rectangle>();
		}
		
		/**
		 * 添加一个不可走区域。
		 * @param rect 不可走区域。
		 */		
		public function addBlock(rect:Rectangle):void
		{
			var l:int = this.blockList.length;
			while (l--)
			{
				if ( this.blockList[l].equals(rect) )
				{
					return;
				}
			}
			
			this.blockList.push(rect);
		}
		
		/**
		 * 移除指定的不可走区域。
		 * @param rect 不可走区域。
		 */		
		public function removeBlock(rect:Rectangle):void
		{
			var l:int = this.blockList.length;
			while (l--)
			{
				if ( this.blockList[l].equals(rect) )
				{
					this.blockList.splice(l, 1);
					return;
				}
			}
		}
		
		/**
		 * 判断指定的点是否为不可走。
		 * @param x x 坐标。
		 * @param y y 坐标。
		 * @return 如果该点不可走，则返回 true ；否则返回 false 。
		 */		
		public function isBlock(x:Number, y:Number):Boolean
		{
			var l:int = this.blockList.length;
			while (l--)
			{
				if ( this.blockList[l].contains(x, y) )
				{
					return true;
				}
			}
			
			return false;
		}
		
		/**
		 * 清空所有不可走区域。
		 */		
		public function clean():void
		{
			this.blockList.length = 0;
		}
		
	}
}